package com.jiazhong.IO流.文件;

import java.io.File;
/**
 * 扫描指定目录中的所有文件
 * 使用递归算法实现该功能:
 *  - 递归算法指在一个方法内部不断的调用自己
 *  - 递归算法必须在某个时刻停止对当前方法的调用
 */
public class ScannerFile {
    public static void main(String[] args) {
        //获得当前电脑的所有磁盘
       File[] roots = File.listRoots();
//        for(File root : roots){
//            scannerFile(root);
//        }
        File file = new File("D:/dataidea");
        scannerFile(file);
    }
    /**
     * 文件扫描方法
     * @param file 文件对象(即表示文件也表示文件夹)
     */
    private static void scannerFile(File file) {
        if (file==null){
            return;
        }
        if (file.isFile()){
            //检测file是否为文件，如果是文件则直接打印，退出本次调用
            String fileName = file.getName();
            if (fileName.endsWith("doc")||fileName.endsWith("docx")){
                String filePath = file.getAbsolutePath();
                System.out.println(filePath);
            }
        }

        //检测file是否为目录，如果是目录则获得该目录的所有子文件
        if (file.isDirectory()){
            //获得当前目录的所有子文件
            File[] subFiles = file.listFiles();
            //判断subFiles中是否包含文件
            if (subFiles!=null && subFiles.length!=0){//判断有子文件
                for (File subFile:subFiles
                     ) {
                    scannerFile(subFile);
                }
            }

        }
    }
}
